\section{字符串}
\textbf{常用的string函数}
% \begin{table}[!htbp]
% \begin{tabular}{ccc}
% \toprule
% 操作类别&方法&说明\\
% 子串&substr()&返回一个串的子串\\
% \multirow{2}*{交换拷贝} & copy()& 将一个串拷贝到另一个串中 \\ \cline{2-3}
% &  swap  &  交换两个串的内容 \\
%     \multirow{2}*{赋值}&assign()&把一个串，一个字符，一个子串赋值给另一个串\\ \cline{2,3}
% & =    &  把一个串，一个字符，一个子串复制给另一个串中 \\
% \multirow{2}*{插入/追加}&在给定位置插入一个字，多个字符或串\\cline{2-3}
% append()/+=&将一个或者多个字符或串最佳在另一个串后\\
% 拼接&+&通过将一个串放置在另一个串后面构建新串\\
% 查询&find()&找到并返回一个子序列的开始位置\\
% \multirow{2}*{替换清除}&replace()&找到并返回一个子序列的开始位置\\ \cline{2,3}
% clear()&清楚串中所有字符\\
% \multirow{2}*{统计}&size()/length()&返回串中字符的数目\\ \cline{2,3}
% max\_size()&返回允许的最大长度的串\\
% \hline
% \end{tabular}
% \end{table}
对串长变化不大的字符串,有三种处理方案
\begin{enumerate}
    \item 用 S[0] 作为记录串长的存储单元 (Pascal)。缺点:限制了串的最大长度不能超过256
    \item 为存储串的长度,另辟一个存储的地方。 缺点:串的最大长度一般是静态给定的,不是动态申请数组空间
    \item 用一个特殊的末尾标记 ‘\ 0’ (C/C++)。例如:C/C++ 语言的 string 函数库 (\#include
          \item<string.h>)采用这一存储结构。‘\ 0’ 的 ASCII 字符表中编号为 0,等价于常量 NULL 、
          数字 0 、常量 false。
\end{enumerate}
\cppfile{code/string/ex1/main.cpp}
字符串匹配算法：
\cppfile{code/string/ex3/main.cpp}

